package com.atjava.nebula.core.dao.ibatis;


/**用于设置排序
 * @author kyo
 *
 */
public class Order {
	
	private boolean ascending;

	private String propertyName;
	
	public String toString() {
		return propertyName + ' ' + (ascending?"asc":"desc");
	}
	

	/**
	 * Constructor for Order.
	 */
	/**构造方法
	 * @param propertyName 排序字段名
	 * @param ascending 是否按正序排序，true为正序，false为倒序
	 */
	public Order(String propertyName, boolean ascending) {
		this.propertyName = propertyName;
		this.ascending = ascending;
	}


	/**
	 * 生成按指定字段名 升序 排序的Order实例
	 *
	 * @param propertyName 字段名
	 * @return Order
	 */
	public static Order asc(String propertyName) {
		return new Order(propertyName, true);
	}

	/**
	 * 生成按指定字段名 倒序 排序的Order实例
	 *
	 * @param propertyName 字段名
	 * @return Order
	 */
	public static Order desc(String propertyName) {
		return new Order(propertyName, false);
	}

	/** 按排序字符串生成排序的Order实例，字符串的格式同SQL标准排序格式，如：addv desc。注意这里只能指定一个排序字段。
	 * @param orderByStr SQL排序字符串（仅支持单个字段）
	 * @return
	 */
	public static Order orderBy(String orderByStr){
		String[] orders=orderByStr.split(" ");
		boolean asceding;
		if(orders.length==2){
			asceding=orders[1].equalsIgnoreCase("asc");
		}
		else
			asceding=true;
		return new Order(orders[0], asceding);
	}
}
